all files / fc-er/ datasource.js

30.56% Statements 11/36
4.17% Branches 1/24
27.27% Functions 3/11
30.56% Lines 11/36
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72             12262× 12262×                                                                                                              
Iif (typeof define !== 'function') {
    var define = require('amdefine')(module);
}
 
define(function (require) {
    'use strict';
 
    var util = require('./util');
 
    var constant = function constant(value) {
        return function () {
            return value;
        };
    };
 
    var remote = function remote(url, options) {
        return function (model) {
            options = util.mix({ url: url, dataType: 'json' }, options);
 
            if (typeof options.data === 'function') {
                options.data = options.data(model);
            }
            var ajax = require('./ajax');
 
            return ajax.request(options);
        };
    };
 
    var permission = function permission(name, permissionProvider) {
        return function () {
            permissionProvider = permissionProvider || require('./permission');
            permissionProvider.isAllow(name);
        };
    };
 
    var defaultValue = function defaultValue(_defaultValue, name) {
        return function (model, options) {
            if (!options.name && !name) {
                throw new Error('No property name specified to determine whether value exists in this model');
            }
 
            var propertyName = name || options.name;
 
            return model.hasValue(propertyName) ? model.get(propertyName) : _defaultValue;
        };
    };
 
    var convertTo = function convertTo(type, name) {
        return function (model, options) {
            if (!options.name && !name) {
                throw new Error('No property name specified to convert');
            }
 
            var property = name || options.name;
            var value = model.get(property);
 
            switch (type) {
                case 'number':
                    return parseInt(value, 10);
                case 'string':
                    return value + '';
                case 'boolean':
                    return !!value;
                default:
                    return value;
            }
        };
    };
 
    return { constant: constant, remote: remote, permission: permission, defaultValue: defaultValue, convertTo: convertTo };
});
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9kYXRhc291cmNlLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLElBQUksT0FBTyxNQUFQLEtBQWtCLFVBQWxCLEVBQThCO0FBQUMsUUFBSSxTQUFTLFFBQVEsVUFBUixFQUFvQixNQUFwQixDQUFULENBQUw7Q0FBbEM7O0FBRUEsT0FBTyxVQUFVLE9BQVYsRUFBbUI7QUFDdEIsaUJBRHNCOztBQUd0QixRQUFNLE9BQU8sUUFBUSxRQUFSLENBQVAsQ0FIZ0I7O0FBS3RCLFFBQU0sV0FBVyxTQUFYLFFBQVcsQ0FBQyxLQUFEO2VBQ2I7bUJBQU07U0FBTjtLQURhLENBTEs7O0FBU3RCLFFBQU0sU0FBUyxTQUFULE1BQVMsQ0FBQyxHQUFELEVBQU0sT0FBTjtlQUNWLFVBQUMsS0FBRCxFQUFXO0FBQ1Asc0JBQVUsS0FBSyxHQUFMLENBQVMsRUFBQyxRQUFELEVBQU0sVUFBVSxNQUFWLEVBQWYsRUFBa0MsT0FBbEMsQ0FBVixDQURPOztBQUdQLGdCQUFJLE9BQU8sUUFBUSxJQUFSLEtBQWlCLFVBQXhCLEVBQW9DO0FBQ3BDLHdCQUFRLElBQVIsR0FBZSxRQUFRLElBQVIsQ0FBYSxLQUFiLENBQWYsQ0FEb0M7YUFBeEM7QUFHQSxnQkFBSSxPQUFPLFFBQVEsUUFBUixDQUFQLENBTkc7O0FBUVAsbUJBQU8sS0FBSyxPQUFMLENBQWEsT0FBYixDQUFQLENBUk87U0FBWDtLQURVLENBVE87O0FBc0J0QixRQUFNLGFBQWEsU0FBYixVQUFhLENBQUMsSUFBRCxFQUFPLGtCQUFQO2VBQ2YsWUFBTTtBQUNGLGlDQUFxQixzQkFBc0IsUUFBUSxjQUFSLENBQXRCLENBRG5CO0FBRUYsK0JBQW1CLE9BQW5CLENBQTJCLElBQTNCLEVBRkU7U0FBTjtLQURlLENBdEJHOztBQTZCdEIsUUFBTSxlQUFlLHNCQUFDLGFBQUQsRUFBZSxJQUFmO2VBQ2pCLFVBQUMsS0FBRCxFQUFRLE9BQVIsRUFBb0I7QUFDaEIsZ0JBQUksQ0FBQyxRQUFRLElBQVIsSUFBZ0IsQ0FBQyxJQUFELEVBQU87QUFDeEIsc0JBQU0sSUFBSSxLQUFKLENBQVUsNEVBQVYsQ0FBTixDQUR3QjthQUE1Qjs7QUFJQSxnQkFBSSxlQUFlLFFBQVEsUUFBUSxJQUFSLENBTFg7O0FBT2hCLG1CQUFPLE1BQU0sUUFBTixDQUFlLFlBQWYsSUFBK0IsTUFBTSxHQUFOLENBQVUsWUFBVixDQUEvQixHQUF5RCxhQUF6RCxDQVBTO1NBQXBCO0tBRGlCLENBN0JDOztBQXlDdEIsUUFBTSxZQUFZLFNBQVosU0FBWSxDQUFDLElBQUQsRUFBTyxJQUFQO2VBQ2QsVUFBQyxLQUFELEVBQVEsT0FBUixFQUFvQjtBQUNoQixnQkFBSSxDQUFDLFFBQVEsSUFBUixJQUFnQixDQUFDLElBQUQsRUFBTztBQUN4QixzQkFBTSxJQUFJLEtBQUosQ0FBVSx1Q0FBVixDQUFOLENBRHdCO2FBQTVCOztBQUlBLGdCQUFJLFdBQVcsUUFBUSxRQUFRLElBQVIsQ0FMUDtBQU1oQixnQkFBSSxRQUFRLE1BQU0sR0FBTixDQUFVLFFBQVYsQ0FBUixDQU5ZOztBQVFoQixvQkFBUSxJQUFSO0FBQ0kscUJBQUssUUFBTDtBQUNJLDJCQUFPLFNBQVMsS0FBVCxFQUFnQixFQUFoQixDQUFQLENBREo7QUFESixxQkFHUyxRQUFMO0FBQ0ksMkJBQU8sUUFBUSxFQUFSLENBRFg7QUFISixxQkFLUyxTQUFMO0FBQ0ksMkJBQU8sQ0FBQyxDQUFDLEtBQUQsQ0FEWjtBQUxKO0FBUVEsMkJBQU8sS0FBUCxDQURKO0FBUEosYUFSZ0I7U0FBcEI7S0FEYyxDQXpDSTs7QUErRHRCLFdBQU8sRUFBQyxrQkFBRCxFQUFXLGNBQVgsRUFBbUIsc0JBQW5CLEVBQStCLDBCQUEvQixFQUE2QyxvQkFBN0MsRUFBUCxDQS9Ec0I7Q0FBbkIsQ0FBUCIsImZpbGUiOiJkYXRhc291cmNlLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaWYgKHR5cGVvZiBkZWZpbmUgIT09ICdmdW5jdGlvbicpIHt2YXIgZGVmaW5lID0gcmVxdWlyZSgnYW1kZWZpbmUnKShtb2R1bGUpfVxuXG5kZWZpbmUoZnVuY3Rpb24gKHJlcXVpcmUpIHtcbiAgICAndXNlIHN0cmljdCc7XG5cbiAgICBjb25zdCB1dGlsID0gcmVxdWlyZSgnLi91dGlsJyk7XG5cbiAgICBjb25zdCBjb25zdGFudCA9ICh2YWx1ZSkgPT4gKFxuICAgICAgICAoKSA9PiB2YWx1ZVxuICAgICk7XG5cbiAgICBjb25zdCByZW1vdGUgPSAodXJsLCBvcHRpb25zKSA9PiAoXG4gICAgICAgICAobW9kZWwpID0+IHtcbiAgICAgICAgICAgICBvcHRpb25zID0gdXRpbC5taXgoe3VybCwgZGF0YVR5cGU6ICdqc29uJ30sIG9wdGlvbnMpO1xuXG4gICAgICAgICAgICAgaWYgKHR5cGVvZiBvcHRpb25zLmRhdGEgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgICAgICAgb3B0aW9ucy5kYXRhID0gb3B0aW9ucy5kYXRhKG1vZGVsKTtcbiAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgbGV0IGFqYXggPSByZXF1aXJlKCcuL2FqYXgnKTtcblxuICAgICAgICAgICAgIHJldHVybiBhamF4LnJlcXVlc3Qob3B0aW9ucyk7XG4gICAgICAgICB9XG4gICAgKTtcblxuICAgIGNvbnN0IHBlcm1pc3Npb24gPSAobmFtZSwgcGVybWlzc2lvblByb3ZpZGVyKSA9PiAoXG4gICAgICAgICgpID0+IHtcbiAgICAgICAgICAgIHBlcm1pc3Npb25Qcm92aWRlciA9IHBlcm1pc3Npb25Qcm92aWRlciB8fCByZXF1aXJlKCcuL3Blcm1pc3Npb24nKTtcbiAgICAgICAgICAgIHBlcm1pc3Npb25Qcm92aWRlci5pc0FsbG93KG5hbWUpXG4gICAgICAgIH1cbiAgICApO1xuXG4gICAgY29uc3QgZGVmYXVsdFZhbHVlID0gKGRlZmF1bHRWYWx1ZSwgbmFtZSkgPT4gKFxuICAgICAgICAobW9kZWwsIG9wdGlvbnMpID0+IHtcbiAgICAgICAgICAgIGlmICghb3B0aW9ucy5uYW1lICYmICFuYW1lKSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdObyBwcm9wZXJ0eSBuYW1lIHNwZWNpZmllZCB0byBkZXRlcm1pbmUgd2hldGhlciB2YWx1ZSBleGlzdHMgaW4gdGhpcyBtb2RlbCcpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBsZXQgcHJvcGVydHlOYW1lID0gbmFtZSB8fCBvcHRpb25zLm5hbWU7XG5cbiAgICAgICAgICAgIHJldHVybiBtb2RlbC5oYXNWYWx1ZShwcm9wZXJ0eU5hbWUpID8gbW9kZWwuZ2V0KHByb3BlcnR5TmFtZSkgOiBkZWZhdWx0VmFsdWU7XG4gICAgICAgIH1cbiAgICApO1xuXG4gICAgY29uc3QgY29udmVydFRvID0gKHR5cGUsIG5hbWUpID0+IChcbiAgICAgICAgKG1vZGVsLCBvcHRpb25zKSA9PiB7XG4gICAgICAgICAgICBpZiAoIW9wdGlvbnMubmFtZSAmJiAhbmFtZSkge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignTm8gcHJvcGVydHkgbmFtZSBzcGVjaWZpZWQgdG8gY29udmVydCcpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBsZXQgcHJvcGVydHkgPSBuYW1lIHx8IG9wdGlvbnMubmFtZTtcbiAgICAgICAgICAgIGxldCB2YWx1ZSA9IG1vZGVsLmdldChwcm9wZXJ0eSk7XG5cbiAgICAgICAgICAgIHN3aXRjaCAodHlwZSkge1xuICAgICAgICAgICAgICAgIGNhc2UgJ251bWJlcic6XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBwYXJzZUludCh2YWx1ZSwgMTApO1xuICAgICAgICAgICAgICAgIGNhc2UgJ3N0cmluZyc6XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB2YWx1ZSArICcnO1xuICAgICAgICAgICAgICAgIGNhc2UgJ2Jvb2xlYW4nOlxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gISF2YWx1ZTtcbiAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICApO1xuXG4gICAgcmV0dXJuIHtjb25zdGFudCwgcmVtb3RlLCBwZXJtaXNzaW9uLCBkZWZhdWx0VmFsdWUsIGNvbnZlcnRUb307XG59KTtcbiJdfQ==